Computerized control systems must execute “real-time” control programs in a predictable and timely fashion responding to sensor signals from the process to provide responsive control signals in return. Such control systems normally operate in a synchronous fashion, for example, by executing the control programs in a predefined and unvarying cyclic period. Computerized control systems may find use in weapons systems, such as missiles, where synchronous execution ensures that critical tasks, such as missile guidance, are attended to properly.
Often, it may be desirable to permit a computerized control system to execute asynchronous services that are not critical for the control mission. Asynchronous in this context means that the services are not regularly executed as part of the control cycle but occur occasionally according to requests that are asynchronous with respect to that control cycle. For example, in a missile control system, it may be desirable to provide a video feed from the missile cameras to a remote command center. When services are executed on the same computer resources as used for the control program, care must be taken that they do not to jeopardize critical control tasks. This can be particularly challenging since performance of these asynchronous tasks often place an additional processing burden on the time-critical real time tasks.
A variety of techniques are known for allocating finite processing resources among different computational tasks. Such systems normally have a resource manager that measures or computes a resource requirement for each task and then sums the requirements of currently executing tasks to compare that sum to the available resources in deciding whether to allow the execution of a new task based on its resource requirement. The resource manager operates during execution of the tasks to dynamically reassess resource allocation on a regular basis.
For this technique to work, the tasks are normally sized to represent a small portion of computational resources so as to present substantially constant resource requirements during their time of operation. This allows the resource manager to assume a substantially constant resource requirement during the task execution.
Normally the tasks also have a priority assigned to them based on the task type. In the event of oversubscription to the computational resources, tasks may be denied execution based on a policy using these task-based priorities.
Running a resource manager is computationally expensive and can substantially decrease the total amount of computational resources available for control tasks and services alike, effectively consuming the resources the resource manager is trying to protect. The computational burden arises from the need by the resource manager to frequently interrupt program flow to measure resource utilization and the time required to implement a complex management strategy. This problem is particularly acute in embedded control systems, such as those in a missile, where processor resources are severely limited.